home *** CD-ROM | disk | FTP | other *** search
/ Software Vault: The Diamond Collection / The Diamond Collection (Software Vault)(Digital Impact).ISO / cdr48 / asm32v20.zip / SOURCE.DOC < prev    next >
Text File  |  1994-01-09  |  21KB  |  602 lines

  1. SOURCE.DOC Copyright (C) 1993 Douglas Herr ■ all rights reserved
  2.  
  3. ASM32 uses a number of subroutines which are not applicable to general
  4. programming.  These subroutines include "$" in their names.
  5.  
  6.  
  7. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  8.  
  9. $clip:        clip a line to fit within graphics view area
  10. Source:       $clip.asm ($graph.asm)
  11.  
  12. Call with:    call from ASM32 line drawing subroutines
  13. Returns:      x & y coordinates in DRAWLINE data area within view area
  14. Uses:         AX, BX, CX, DX, DI, flags
  15.  
  16.  
  17. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  18.  
  19. $ega16:       update EGA/VGA/SVGA registers for given drawmode & color
  20. Source:       $ega16.asm ($graph.asm)
  21.  
  22. Call with:    no parameters
  23.               call $graph before calling $ega16
  24.               drawmode & gcolor must be current
  25. Returns:      DX = 3CEh (Graphics Controller data register address)
  26. Uses:         DX, flags
  27.  
  28.  
  29. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  30.  
  31. $fget:       read more data into file buffer
  32. Source:      $fget.asm
  33.  
  34. Call with:   BX = file handle
  35.              ES = buffer segment address
  36. Returns:     DF = 0
  37.              if CF = 0, AX = bytes read from file
  38.              if CF = 1, AX = DOS error code
  39. Uses:        AX, DX, SI, DS, flags
  40.  
  41. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  42.  
  43. $gbytes:      calculate byte size of graphics screen
  44. Source:       $gbytes.asm ($graph.asm)
  45.  
  46. Call with:    no parameters
  47.               $graph must be called before calling $gbytes
  48. Returns:      EAX = byte size of screen
  49. Uses:         EAX
  50.  
  51.  
  52. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  53.  
  54. $getdot:      determines pixel status (graphics modes)
  55. Source:       $getdot.asm ($graph.asm)
  56.  
  57. Call with:    AX = x-coordinate, BX = y-coordinate
  58.               ES = segment address of screen buffer
  59.               all $graph data must be current
  60. Returns:      AX = pixel value
  61. Uses:         AX, flags
  62.  
  63.  
  64. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  65.  
  66. $gp00, $gp02, $gp06, $gp08, $gp10: GPrint/GPrintX code for various dottypes
  67. Source:       $gp00.asm, $gp02.asm, $gp06.asm $gp08.asm, $gp10.asm
  68.                    (banks.asm, $ytable.asm)
  69.  
  70. Call with:    called from GPrint or GPrintX subroutines
  71.               DS:[SI] -> character font definition
  72.               ES = segment address of screen buffer
  73. Returns:      nothing
  74.               prints a character on graphics screen
  75. Uses:         AX, BX, CX, DX, DI, SI, flags
  76.  
  77.  
  78. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  79.  
  80. $gpick:      select string from fixed-field string block; graph mode
  81. Source:      $gpick.asm (heap.asm, strncpy.asm, drawbox.asm, fillbox.asm,
  82.                gprint.asm, dosalloc.asm, bitblock.asm, bbbytes.asm,
  83.                strlen.asm, gcolor.asm, $menu.asm, $graph.asm, m$input.asm,
  84.                v$extkey.asm, m$chrn.asm, m$nkey.asm)
  85.  
  86. Call with:   ES = segment address of string list
  87.              AX = number of strings
  88.              CX = field size
  89.              BX = initial choice
  90.              DS:[DX] pointing to upper left screen coordinates
  91.              assumes DS:DGROUP
  92. Returns:     AX = returning keycode
  93.              BX = returned selection number
  94. Uses:        AX, BX, CX, DX, SI, DI, flags
  95.  
  96.  
  97. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  98.  
  99. $graph:       set up screen parameters for all ASM32 graphics modes
  100. Source:       $graph.asm (gcolor.asm, $ytable.asm)
  101.  
  102. Call with:    no parameters
  103.               system must be in graphics mode you intend to use
  104. Returns:      nothing
  105.               updates $graph data: view coordinates
  106.                                    x-limit
  107.                                    y-limit
  108.                                    base segment address
  109.                                    page size
  110.                                    byte width of screen
  111.                                    maximum page number
  112.                                    dot type:  0 = CGA 4-color
  113.                                               2 = monochrome
  114.                                                   (CGA, Herc, ATT, mode 11h)
  115.                                               4 = Hercules InColor
  116.                                               6 = EGA/VGA 16-color & monochrome
  117.                                                   SVGA16 (up to 800x600)
  118.                                               8 = mode 13h 256-color
  119.                                              10 = VGA13X
  120.                                              12 = SVGA16 (over 800x600)
  121.                                              14 = SVGA256
  122.  
  123.  
  124. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  125.  
  126. $h8x8:       copies standard 8x8 character definition to 0B400:0000
  127.              for Hercules RamFont modes
  128. Source:      $h8x8.asm (f8x8.asm)
  129.  
  130. Call with:   no parameters; assumes Hercules RamFont card is installed
  131. Returns:     nothing
  132. Uses:        nothing; all registers and flags are saved
  133. Used by:     HRam9043, HRam8043
  134.  
  135.  
  136. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  137.  
  138. $h8x12:      copies standard 8x12 character definition to 0B400:0000
  139.              for Hercules RamFont modes
  140. Source:      $h8x12.asm ($rld.asm, f8x12rle.asm)
  141.  
  142. Call with:   no parameters; assumes Hercules RamFont card is installed
  143. Returns:     nothing
  144. Uses:        nothing; all registers and flags are saved
  145. Used by:     HRam9029, HRam8029
  146.  
  147.  
  148. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  149.  
  150. $handle:     verify handle for buffered file I/O
  151. Source:      fopen.asm
  152.  
  153. Call with:   BX = file handle
  154.              ASSUMES DS:DGROUP
  155. Returns:     if CF = 0, SI points to file handle in ASM32 buffer data area
  156.                         segment address of buffer associated with this handle
  157.                         at 2[SI]
  158.              if CF = 1, handle in BX not managed by ASM32 buffer system
  159. Uses:        SI, flags
  160.  
  161. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  162.  
  163. $herc:       detects Hercules-compatible equipment; does not determine
  164.              if Hercules equipment is the default monitor (see IsHerc)
  165. Source:      $herc.asm
  166.  
  167. Call with:   no parameters
  168. Returns:     if CF = 1, no Hercules-compatible equipment installed
  169.              if CF = 0, AX = Hercules model
  170.                        128 = Hercules Graphics Card or compatible
  171.                        144 = Hercules Graphics Card Plus
  172.                        208 = Hercules InColor card
  173. Uses:        EAX, CF
  174.  
  175.  
  176. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  177.  
  178. $herc16:      update InColor registers for given drawmode & color
  179.               used only by dottype 4 in graphics modes
  180. Source:       $herc16.asm ($graph.asm)
  181.  
  182. Call with:    no parameters
  183.               call $graph before calling $herc16
  184.               drawmode & gcolor must be current
  185. Returns:      EBX = ABS(drawmode) shl 2
  186. Uses:         EBX, flags
  187.  
  188.  
  189. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  190.  
  191. $hislope:     draw a high-slope line
  192. Source:       $hislope.asm ($ega16.asm, $herc16.asm, $vga256.asm,
  193.                           $hipatrn.asm, banks.asm, $graph.asm, dotmask.asm)
  194.  
  195. Call with:    ES = screen buffer segment
  196.               x0 = [EBP-2]
  197.               y0 = [EBP-4]
  198.               x1 = [EBP-6]
  199.               y1 = [EBP-8]
  200. Returns:      nothing
  201. Uses:         AX, BX, CX, DX, DI, SI, flags
  202.  
  203.  
  204. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  205.  
  206. $horiz:       draw horizontal line
  207. Source:       $horiz.asm ($ega16.asm, $herc16.asm, $vga256.asm, $hvpatrn.asm
  208.                           banks.asm, $graph.asm, dotmask.asm)
  209.  
  210. Call with:    ES = screen buffer segment
  211.               x0 = [EBP-2]
  212.               y0 = [EBP-4]
  213.               x1 = [EBP-6]
  214.               y1 = [EBP-8]
  215. Returns:      nothing
  216. Uses:         AX, BX, CX, DX, DI, SI, flags
  217.  
  218.  
  219. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  220.  
  221. $hipatrn:     draw a high-slope line with pattern
  222.               called from $hislope
  223. Source:       $hipatrn.asm
  224.  
  225. $hpattern:    draw a horizontal line with pattern
  226.               called from $horiz
  227. Source:       $hvpatrn.asm
  228.  
  229. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  230.  
  231. a$putw:      module used by several ASM32 text subroutines to copy
  232.              a character/attribute pair to a window of the screen;
  233.              includes snow control logic for CGA systems.
  234. Source:      a$putw.asm
  235.  
  236. Call with:   ECX = column width of window
  237.              DX = 0 to disable snow control
  238.                 = 3DAh to enable snow control (COLOR monitors only!!)
  239.              SI = row height of window
  240.              EDI points to video buffer
  241.              AL = character
  242.              AH = color attribute
  243.              BX = bytes per screen row (80-column screen has 160 bytes per row)
  244.              DF = 0 (clear direction flag with CLD)
  245. Uses:        EDI, SI, flags
  246.  
  247.  
  248. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  249.  
  250. a$paint:     used to change color of the screen; used by Paint and
  251.              WPaint subroutines.  Includes snow control logic for CGA
  252.              systems.
  253. Source:      a$paint.asm
  254.  
  255. Call with:   ES:[DI] pointing to screen
  256.              CX = number of columns
  257.              SI = number of rows
  258.              AH = color attribute
  259.              DX = 3DAh for CGA snow control, 0 otherwise
  260.              BP = bytes per screen row
  261.  
  262.  
  263. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  264.  
  265. a$recolor:   replaces selected screen color; used by ReColor and
  266.              WReColor subroutines.  Includes snow control logic for CGA
  267.              systems.
  268. Source:      a$recolor.asm
  269.  
  270. Call with:   ES:[DI] pointing to screen
  271.              AL = oldcolor
  272.              AH = newcolor
  273.              DX = 0 or 3DAh for snow control
  274.              SI = number of rows
  275.              CX = number of columns
  276.              BP = bytes per screen row
  277.  
  278.  
  279. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  280.  
  281. $wdata:      parameter manager for ASM32's text-mode window subroutines.
  282. Source:      $wdata.asm (crtinfo.asm)
  283.  
  284. Call with:   EBX pointing to widow corner data
  285.              requires 4 bytes available at [ebp-4]
  286.              row0  equ  [ebx]
  287.              col0  equ 2[ebx]
  288.              row1  equ 4[ebx]
  289.              col1  equ 6[ebx]
  290. Returns:     SI = number of rows
  291.              ECX = number of columns
  292.              DX = 0 if no CGA, 3DAh if CGA and "snow" control not disabled
  293.              [ebp-4] = bytes per screen row
  294.              EDI -> [row0, col0] on screen
  295. Uses:        ECX, DX, EDI, SI, [EBP-4], flags
  296.  
  297.  
  298. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  299.  
  300. $rlbytes:    calculates bytes required to decode run-length encoded data
  301. Source:      $rlbytes.asm
  302.  
  303. Call with:   DS:[SI] pointing to encoded data
  304.              CX = size of encoded data block
  305. Returns:     AX = bytes required to decode data block
  306. Uses:        AX
  307.  
  308.  
  309. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  310.  
  311. $rld:        decodes run-length encoded data
  312. Source:      $rld.asm
  313.  
  314. Call with:   DS:[SI] pointing to encoded source data
  315.              ES:[DI] pointing to destination buffer
  316.              CX = number of encoded bytes
  317.              assumes destination buffer is large enough for decoded data
  318. Returns:     nothing
  319. Uses:        nothing
  320.  
  321.  
  322. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  323.  
  324. $rle:        run-length encoding data compression
  325. Source:      $rle.asm
  326.  
  327. Call with:   DS:[SI] pointing to data to be encoded
  328.              ES:[DI] pointing to output buffer
  329.              CX = number of bytes to encode
  330.              assumes output buffer is at least the same size as input data
  331. Returns:     DF = 0
  332.              if CF = 0, AX = encoded data size
  333.              if CF = 1, run-length encoding will not compress file
  334.                         data in output buffer is incomplete
  335. Uses:        AX, flags
  336.  
  337. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  338.  
  339. $strstr:     string search module used by several ASM32 subroutines
  340. Source:      $strstr.asm
  341.  
  342. Call with:   [EDI] -> search string, [ESI] -> pattern string
  343.              EBX = pattern string length, EDX = search string length
  344.              $strstr searches for the first occurrance of the pattern
  345.              string in the search string
  346. Returns:     if CF = 1, no match
  347.              if CF = 0, EAX = match offset from ES:[EDI]
  348. Uses:        EAX, EBX, ECX, EDX, ESI, EDI, flags
  349.  
  350.  
  351. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  352.  
  353. $wcopy:      copies word data from one portion of memory to another;
  354.              intended for copying to/from video memory in text mode
  355.              includes snow control logic for CGA systems.
  356. Source:      $wcopy.asm
  357.  
  358. Call with:   ECX = words to copy
  359.              ESI -> source
  360.              EDI -> destination
  361.              DX = CRTC status port if CGA, else 0
  362.              DF = 0 or 1
  363. Returns:     EDI pointing past end of destination
  364.              ESI pointing past end of block
  365.              ECX = 0
  366. Uses:        AX, ECX, EDI, ESI, flags
  367. Called by:   WSave, WRestore, GetScreen, PutScreen, TCopy, VScroll, HScroll
  368.  
  369.  
  370.  
  371. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  372.  
  373. m$putwindow:  save screen, clear window & print window frame
  374. Source:       m$putw.asm (wsize.asm, wsave.asm, dosalloc.asm, wframe.asm,
  375.                           wclear.asm)
  376.  
  377. Call with:    DS:[BX] pointing to window corner data
  378. Returns:      ES = segment address of saved screen area
  379. Uses:         ES, flags
  380. Called by:    PICKSTR
  381.  
  382.  
  383. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  384.  
  385. $strlist:     copy group of ASCIIZ strings to block of fixed-length strings
  386. source:       $strlist.asm (heap.asm, strlen.asm)
  387.  
  388. Call with:    ESI pointing to first string to copy
  389.               ECX = minimum field size
  390.               string group terminated with double NUL
  391.               requires sufficient free DOS memory
  392.  
  393. Returns:      if CF = 1, insufficient DOS memory available
  394.               if CF = 0:
  395.                EDI = base address of string block
  396.                EAX = number of strings
  397.                ECX = string field size
  398. Uses:         EAX, ECX, EDI, flags
  399. Called by:    PICKSTR, GPICKSTR
  400.  
  401.  
  402.  
  403. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  404.  
  405. m$nkey:       process normal keystroke for menu subroutines
  406. Source:       m$nkey.asm (isupper.asm, m$chr.asm)
  407.  
  408. Call with:    AL = key code
  409.               BX = initial cursor position
  410.               CX = field width
  411.               DX = number of menu choices
  412.               ES:[DI] pointing to first menu choice
  413. Returns:      BX = output position
  414.                if CF = 0, found matching character
  415.                if CF = 1, no match
  416. Uses:         AX, BX, CX, DX, DI, flags
  417. Called by:    $tpick
  418.  
  419.  
  420. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  421.  
  422. m$chr:        determines if a keycode is the first uppercase character
  423.               in a string
  424. Source:       m$chr.asm (strlen.asm)
  425.  
  426. Call with:    AX = keycode
  427.               DS:[EBX] pointing to string
  428. Returns:      if CF = 1, string length = 0
  429.               if CF = 0:
  430.                 ECX = 0 if no upper case characters in the string
  431.                 if ECX <> 0, AH = first UCASE character
  432.                 ZF = 1 if character is first ucase in string
  433.                 DS:[WBX] points to first ucase character
  434. Uses:         AX, EBX, ECX, flags
  435. Called by:    $tpick, PULLDOWN
  436.  
  437.  
  438.  
  439. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  440.  
  441. v$extkey:     extended keycode processor for ASM32 vertical list menus
  442.               (text and graph modes)
  443. Source:       v$extkey.asm
  444.  
  445. Call with:    AL = low word of ASM32 extended key code
  446.               [EBP-2] = field width of string list
  447.               [EBP-4] = number of choices
  448.               [EBP-6] = current choice
  449.               [EBP-8] = first string to print (for scrolling if required)
  450.               [EBP-10] = number of strings to print 
  451.                         ( = number of choices if no scrolling required)
  452.  
  453. Returns:      if CF = 0, modifies [EBP-6] and [EBP-8]
  454.               if CF = 1, keycode not a valid cursor movement key
  455.               valid keys: Up, Down, Home, End, PgUp, PgDown
  456.  
  457. Uses:         AX, flags
  458. Called by:    $pick, $gpick
  459.  
  460. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  461.  
  462. FIND_CGA:     determine if color monitor is installed
  463. FIND_MDA:     determine if monochrome monitor is installed
  464. Source:       $6845.asm
  465.  
  466. Call with:    no parameters
  467. Returns:      if CF = 0, monitor is installed
  468.               if CF = 1, monitor is not installed
  469. Uses:         flags
  470.  
  471.  
  472.  
  473. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  474.  
  475. $ytable:      calculate buffer offset for each row of screen
  476.               used to set up for dottype 0 - 4 graphics modes
  477. Source:       $ytable.asm ($herc.asm)
  478.  
  479. Call with:    AX = 0
  480.               ES:[DI] pointing to YTABLE data area
  481.               CX = ylimit+1
  482.               DF = 0
  483. Returns:      nothing
  484. Uses:         AX, BX, CX, DX, DI
  485.  
  486.  
  487.  
  488. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  489.  
  490. a$mname:      return month or day name to calling program
  491.               used by MONTHNAME and DAYNAME
  492. Source:       a$mname.asm
  493.  
  494. Returns:      ES:[BX] -> month name string
  495.               CX = string length
  496. Uses:         ES, BX, CX
  497.  
  498.  
  499. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  500.  
  501. $vga256:      determine color & machine code for given drawmode
  502. Source:       $vga256.asm ($graph.asm)
  503.  
  504. Call with:    no parameters
  505.               call $graph before calling $vga256
  506.               drawmode & gcolor must be current
  507. Returns:      AL = color
  508.               DL = machine code
  509.               DH = ABS(drawmode)
  510. Uses:         AX, DX, flags
  511.  
  512.  
  513.  
  514. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  515.  
  516. $reset:       restores default hardware settings for graphics modes
  517.               used as part of exit code from ASM32 graphics subroutines
  518. Source:       $reset.asm ($graph.asm)
  519.  
  520. Call with:    no parameters
  521. Returns:      nothing
  522. Uses:         nothing
  523.  
  524.  
  525. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  526.  
  527. $putdot:      updates a pixel on graphics screen
  528. Source:       $putdot.asm ($graph.asm, $herc16.asm, banks.asm, dotmask.asm)
  529.  
  530. Call with:    AX = x-coordinate, BX = y-coordinate
  531.               all $graph data must be current
  532. Returns:      nothing
  533. Uses:         flags
  534.  
  535.  
  536.  
  537. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  538.  
  539. $rotate:      rotates character font for GPrint & GPrintX
  540. Source:       $gp.asm
  541.  
  542. Call with:    [ESI] pointing to unrotated font
  543. Returns:      [ESI] pointing to new charcter font on stack
  544. Uses:         ESI, flags
  545.  
  546.  
  547.  
  548. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  549.  
  550. $vert:        draw vertical line
  551. Source:       $vert.asm ($ega16.asm, $herc16.asm, $vga256.asm, $hvpatrn.asm
  552.                           banks.asm, $graph.asm, dotmask.asm)
  553.  
  554. Call with:    ES = screen buffer segment
  555.               x0 = [EBP-2]
  556.               y0 = [EBP-4]
  557.               x1 = [EBP-6]
  558.               y1 = [EBP-8]
  559. Returns:      nothing
  560. Uses:         AX, BX, CX, DX, DI, SI, flags
  561.  
  562.  
  563. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  564.  
  565. $loslope:     draw a low-slope line
  566. Source:       $loslope.asm ($ega16.asm, $herc16.asm, $vga256.asm,
  567.                           $lopatrn.asm, banks.asm, $graph.asm, dotmask.asm)
  568.  
  569. Call with:    ES = screen buffer segment
  570.               x0 = [EBP-2]
  571.               y0 = [EBP-4]
  572.               x1 = [EBP-6]
  573.               y1 = [EBP-8]
  574. Returns:      nothing
  575. Uses:         AX, BX, CX, DX, DI, SI, flags
  576.  
  577.  
  578.  
  579. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  580.  
  581. m$input:      input module for ASM32 menu subroutines
  582. Source:       m$input.asm (kifwait.asm, $flags.asm)
  583.  
  584. Call with:    no parameters
  585. Returns:      AX = keycode
  586.               BX = mouse buttons pressed
  587.                mouse motion is returned as a Left, Right, Up or Down
  588.                keycode.  IsMouse must be called before the menu subroutine
  589.                to enable mouse functions.
  590. Uses:         AX, BX, flags
  591.  
  592.  
  593. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  594.  
  595. $lopatrn:     draw a low-slope line with pattern
  596.               called from $loslope
  597. Source:       $lopatrn.asm
  598.  
  599. $vpattern:    draw a vertical line with pattern
  600.               called from $vert
  601. Source:       $hvpatrn.asm
  602.